Programmable time-intervals generators are useful in a variety of applications, e.g. to generate delays in digital systems for DC controlling three-phase brushless motors incorporating no position sensors, referred to in the pertinent technical literature as DC brushless sensorless motors. Alternatively, generators of this kind may be used to directly generate signal-timing signals at predetermined time spacings, or control signals.
In all cases, time intervals ought to be generated with programmable duration, from a basic time interval (i.e. a counted coded number for clock periods) which separates two discrete events that may be of the same type.
In conventional time-intervals generation systems of the digital type, the time interval between two events is divided into a predetermined number of identical time subintervals, and in order to arrive at the programmed time spacing, the duration of one such time subinterval is multiplied a predetermined number of times.
It has been common practice to use for this operation a digital counter with base 2, e.g. sixteen-bit, which is cleared on the occurrence of an event and begins counting at a rate which is set by a clock signal.
A second event, which may obviously be of the same type as the first, will enable a memory to store some of the most significant bits of the coded number by the counter, e.g. the first eleven bits, thereby performing a truncation operation, in this case on the least significant five bits, which is the equivalent of dividing the counted number. Specifically in this example, the division is by 2 to a power of 5, namely by 32.
A decremental counter or down-counter then begins to count down the resultant coded number, and an additional counter is programmed to count the number of times that the down-counter must count the coded number. Thus, a time interval is obtained which is equal to the coded number count time multiplied a predetermined number of times.
However, this scheme has a drawback which may become serious in certain applications.
To improve the programmability of the actual durations of the time spacings generated and their accuracy, the time interval must be divided between the two control events into increasingly "finer", and hence more numerous, subintervals.
The consequent overall error, however, may even exceed in some cases that brought about by a coarser subdivision.
In fact, the subdivision of the interval between the two events is performed in a coded mode by truncation of a number, and the resultant error is, therefore, multiplied by the number of times that the subinterval thus obtained is repeated to arrive at the programmed time interval.